home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Languguage OS 2
/
Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO
/
a_utils
/
perl
/
prlbkxmp.lha
/
ch6
/
fixscripts
< prev
next >
Wrap
Text File
|
1991-01-08
|
1KB
|
69 lines
#!/usr/bin/perl
die "Usage: fixscripts [files]\n" unless @ARGV;
# Configuration parameters.
$BIN = '/usr/local/bin';
$SCRIPTS = '/u/scripts';
$BAK = 'bak';
# Process each file.
foreach $file (@ARGV) {
unless (-T $file) {
warn "Can't process binary file: $file\n";
next;
}
open(FILE, $file)
|| do { warn "Can't open $file: $!\n"; next; };
# Now process the file.
$contents = '';
$changed = 0;
while (<FILE>) {
if (m#$BIN#o) {
print STDERR "<$file:\t",$_;
$changed++;
if (m#:/#o) { # a $path
s#$BIN#$BIN:$SCRIPTS#o;
}
elsif (m# /usr# && /set\s/) { # a $PATH
s#$BIN([^/])#$BIN $SCRIPTS$1#o;
}
else {
# Try substitutions until one works.
s#$BIN/(\w+)#
-f "$SCRIPTS/$1" ?
"$SCRIPTS/$1" :
"$BIN/$1"#oeg # a program
||
s# $BIN# $BIN $SCRIPTS#o # $PATH?
||
s#$BIN #$BIN $SCRIPTS #o # $PATH?
||
s#:$BIN#:$BIN:$SCRIPTS#o # $path?
||
s#$BIN:#$BIN:$SCRIPTS:#o # $path?
;
}
print STDERR ">$file:\t",$_;
}
$contents .= $_;
}
close FILE;
if ($changed) {
rename($file,"$file.$BAK") ||
do { warn "Can't rename $file: $!\n"; next; };
open(FILE, ">$file") ||
do { warn "Can't make $file: $!\n"; next; };
print FILE $contents;
close FILE;
}
}